// @author Bhavya Mehta package com.example.listviewfilter.test; import android.test.ActivityInstrumentationTestCase2; import android.test.ViewAsserts; import android.test.suitebuilder.annotation.MediumTest; import android.test.suitebuilder.annotation.SmallTest; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.TextView; import com.example.listviewfilter.R; import com.example.listviewfilter.ui.MainActivity; import com.example.listviewfilter.ui.PinnedHeaderListView; // Main activity unit test case public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> { // UI elements private MainActivity mActivity; private EditText mSearchView; private PinnedHeaderListView mListView; private ProgressBar mProgressVew; private TextView mEmptyTextView; public MainActivityTest() { super(MainActivity.class); } // Initialize member variables @Override protected void setUp() throws Exception { super.setUp(); setActivityInitialTouchMode(false); mActivity = getActivity(); mSearchView = (EditText) mActivity.findViewById(R.id.search_view); mListView = (PinnedHeaderListView) mActivity.findViewById(R.id.list_view); mProgressVew=(ProgressBar)mActivity.findViewById(R.id.loading_view); mEmptyTextView=(TextView)mActivity.findViewById(R.id.empty_view); } // null check condition @SmallTest public void testPreconditions() { // Try to add a message to add context to your assertions. These messages will be shown if // a tests fails and make it easy to understand why a test failed assertNotNull("mActivity is null", mActivity); assertNotNull("mSearchView is null", mSearchView); assertNotNull("mListView is null", mListView); assertNotNull("mProgressVew is null", mProgressVew); assertNotNull("mEmptyTextView is null", mEmptyTextView); } // list view is in layout or not? @MediumTest public void testListViewLayout() { final View decorView = mActivity.getWindow().getDecorView(); ViewAsserts.assertOnScreen(decorView, mListView); final ViewGroup.LayoutParams layoutParams =mListView.getLayoutParams(); assertNotNull("mListView layoutParams is null",layoutParams); assertEquals("mListView has wrong width",layoutParams.width, WindowManager.LayoutParams.MATCH_PARENT); assertEquals("mListView has wrong height",layoutParams.height, WindowManager.LayoutParams.MATCH_PARENT); sleep(); assertTrue("mListView is not visible",View.VISIBLE == mListView.getVisibility()); } // thread sleep for 2000 milliseconds private void sleep() { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } // search box is in layout or not? @MediumTest public void testSearchViewLayout() { final View decorView = mActivity.getWindow().getDecorView(); ViewAsserts.assertOnScreen(decorView, mSearchView); final ViewGroup.LayoutParams layoutParams =mSearchView.getLayoutParams(); assertNotNull("mSearchView layoutParams is null",layoutParams); assertEquals("mSearchView has wrong width",layoutParams.width, WindowManager.LayoutParams.MATCH_PARENT); assertEquals("mSearchView has wrong height",layoutParams.height, WindowManager.LayoutParams.WRAP_CONTENT); assertTrue("mSearchView is not visible",View.VISIBLE == mSearchView.getVisibility()); } // search box hint text contains correct text or not? @SmallTest public void testSearchHintText() { final String expected = mActivity.getString(R.string.search_hint); final String actual = mSearchView.getHint().toString(); assertEquals("mSearchView contains wrong hint text", expected, actual); } // empty view contains correct text or not? @SmallTest public void testEmptyViewText() { final String expected = mActivity.getString(R.string.empty_list_msg); final String actual = mEmptyTextView.getText().toString(); assertEquals("mEmptyTextView contains wrong text", expected, actual); } // search list view content by latter "A" @MediumTest public void testListViewSearch() { // Send string input value getInstrumentation().runOnMainSync(new Runnable() { @Override public void run() { mSearchView.requestFocus(); } }); getInstrumentation().waitForIdleSync(); getInstrumentation().sendStringSync("A"); getInstrumentation().waitForIdleSync(); sleep(); getInstrumentation().runOnMainSync(new Runnable() { @Override public void run() { for(int i=0;i<mListView.getChildCount();i++) { TextView list_item=(TextView) mListView.getChildAt(i); assertNotNull("listItem is null", list_item); final char expected = 'A'; final char actual = list_item.getText().charAt(0); assertEquals("search contains wrong listItem", expected, actual); } } }); getInstrumentation().waitForIdleSync(); } }